import { totaldata } from "@/api/Home/Home.api";
export default {
    namespaced:true,
    state() {
        return {
            homeData: {},
            nameObj: {
                totalOrder: {
                    name: '总订单',
                    icon: 'sell-dingdan'
                },
                totalAmount: {
                    name: '总销售额',
                    icon: 'sell-zongxiaoshou'
                },
                todayOrder: {
                    name: '今日订单',
                    icon: 'sell-dingdan'
                },
                totayAmount: {
                    name: '今日销售额',
                    icon: 'sell-jinrixiaoshou'
                }
            },
            option: {
                title: {
                    text: '折线图堆叠'
                },
                tooltip: {
                    trigger: 'axis'
                },
                legend: {
                    data: ['订单', '销售额']
                },
                grid: {
                    left: '3%',
                    right: '4%',
                    bottom: '3%',
                    containLabel: true
                },
                toolbox: {
                    feature: {
                        saveAsImage: {}
                    }
                },
                xAxis: {
                    type: 'category',
                    boundaryGap: false,
                    data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
                },
                yAxis: {
                    type: 'value'
                },
                series: [
                    {
                        name: '订单',
                        type: 'line',
                        stack: '总量',
                        data: [320, 332, 301, 334, 390, 330, 320]
                    },
                    {
                        name: '销售额',
                        type: 'line',
                        stack: '总量',
                        data: [820, 932, 901, 934, 1290, 1330, 1320]
                    }
                ]
            },

        }
    },
    getters: {
        /* 
               1. 将后端返回的首页数据保存在data内的homeData中
               2. 使用计算属性基于homeData来计算一个可以方便生成四个信息卡的数组
               3. 创建一个辅助对象
                   - 含有我们需要的全部字段：totalOrder，totalAmount，todayOrder，totayAmount
                   - 利用这四个字段去提前预置每个产品卡需要的相关信息
               4. 遍历homeData，拿homeData中所有的key去辅助对象中取值，能取到则代表这个key是信息卡需要的
               5. 计算属性方法中，提前定义一个数组，用于存放处理好的信息卡对象
             */
        infoCardData(state) {
            let infoCardArr = [];
            for (let key in state.homeData) {
                if (state.nameObj[key]) {
                    infoCardArr.push({
                        ...state.nameObj[key],
                        data: state.homeData[key]
                    })
                }
            }
            return infoCardArr
        },
    },
    mutations: {
        /* 
           请务必注意，在vue中处理引用类型一定要小心
       */
        UPDATE_HOME_DATA(state, payload) {
            state.homeData = Object.assign({}, payload)
        },

        // 更新option
        UPDATE_OPTION(state, payload) {
            state.option.xAxis.data = [...payload.xData]
            state.option.series[0].data = [...payload.orderData]
            state.option.series[1].data = [...payload.amountData]
        },
    },
    actions:{
        // 请求homeData的数据
        SYNC_UPDATE_HOME_DATA({ commit }) {
            totaldata().then((res) => {
                commit('UPDATE_HOME_DATA', res.data)
                commit('UPDATE_OPTION', res.data)
            });
        },
    },
    modules:{}
}